In distributed processing systems, such as file server systems, multiple separate processing modules may be connected together as a unit to perform a common function. For example, in modern file server systems, multiple file server modules, also referred to as data movers, accept connections from clients, retrieve data from storage, and distribute data to the clients. Such redundancy provides faster service and protection against failure of one or more of the file server modules.
In one conventional multi-file-server system, data movers or file servers do not include individual enclosures and are instead located in a fixed-size cabinet. FIG. 1 illustrates this conventional topology. In FIG. 1, data movers 100, 102, 104, 106, 108, and 110 and control stations 112 and 114 are plugged into slots 116, 118, 120, 122, 124, 126, 128, and 130 in a cabinet 132. Each data mover 100, 102, 104, 106, 108, and 110 performs a file server function. Control stations 114 and 116 control the initialization and overall operation of the data movers. The data movers communicate with clients 134 to serve files stored in RAID arrays 136.
In the topology illustrated in FIG. 1, each data mover is assigned a location-based identifier corresponding to the slot in which it plugs in cabinet 132. For example, data mover 100 plugs into slot 118. Hardware on data mover 100 reads a slot ID of 2 from the connector into which data mover 100 plugs. Similarly, data mover 102 plugs into slot 120, reads the associated location bits, determines that it is plugged into slot number 4 and stores that information. Each data mover performs a similar process and determines its location-based identifier. The data movers can then be addressed by control stations 114 and 116 using these location-based identifiers.
One problem with the topology illustrated in FIG. 1 is that cabinet 132 is expensive and not upward- or downward-scalable to arbitrary numbers of processing modules. Cabinet 132 represents a fixed cost for the equipment purchaser, even if the purchaser does not desire to fill all of the processing module slots. The cost of cabinet 132 may be justified if all of the slots in cabinet 132 are filled with components. However, some purchasers may desire to purchase fewer processing modules than cabinet 132 is designed to accommodate. For such purchasers, buying a cabinet 132 with empty slots is inefficient. Other purchasers may desire to purchase more processing modules than one cabinet 132 is designed to accommodate but fewer processing modules than two cabinets are designed to accommodate. For such purchasers, purchasing two cabinets—one being full and the other with empty slots—is likewise inefficient.
In light of the inefficiencies of providing fixed-size cabinets to house multiple processing modules, it is desirable to design modular processing module enclosures where arbitrary numbers of such processing module enclosures can be connected to each other without requiring a one-size-fits-all cabinet. However, in such a configuration, the processing modules no longer have location-based identifiers because the cabinet is not present to assign the identifiers. Each processing module may have a physical identifier, but the physical identifier does not indicate the processing module's location relative to other processing modules.
Accordingly, there exists a long felt need for methods, systems, and computer program products for assigning location-based identifiers to arbitrary numbers of interconnected processing modules and for verifying consistency of interconnect wiring between the processing modules.